package com.slz.crm.pojo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.slz.crm.pojo.ao.Privacy;
import com.slz.crm.pojo.entity.ApprovalAttachmentEntity;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 审批附件视图对象
 */
@Data
public class ApprovalAttachmentVO implements Privacy {

    /**
     * 附件ID
     */
    private Long id;

    /**
     * 关联审批ID
     */
    private Long approvalId;
    /**
     * 关联审批名称
     */
    private String approvalName;

    /**
     * 文件名称（原始文件名）
     */
    private String fileName;

    /**
     * 文件存储路径（服务器存储地址）
     */
    private String filePath;

    /**
     * 文件大小（单位：字节）
     */
    private Long fileSize;

    /**
     * 文件类型（如：image/png、application/pdf）
     */
    private String fileType;
    /**
     * 上传时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime uploadTime;
    /**
     * 文件数据
     */
    private byte[] fileData;

    /**
     * 从Entity创建VO，需要传入审批名称
     * @param entity 审批附件实体
     * @param approvalName 审批名称
     * @return ApprovalAttachmentVO
     */
    public static ApprovalAttachmentVO fromEntity(ApprovalAttachmentEntity entity, String approvalName) {
        if (entity == null) {
            return null;
        }

        ApprovalAttachmentVO vo = new ApprovalAttachmentVO();
        vo.setId(entity.getId());
        vo.setApprovalId(entity.getApprovalId());
        vo.setApprovalName(approvalName);
        vo.setFileName(entity.getFileName());
        vo.setFilePath(entity.getFilePath());
        vo.setFileSize(entity.getFileSize());
        vo.setFileType(entity.getFileType());
        vo.setUploadTime(entity.getUploadTime());

        return vo;
    }

}
